자바스크립트의 좋은 문법들
01)공백(whitespace)
공백은 문자를 구분하는 형태를 주석의 형태를 취할 수 있다.(즉, 주석 역시 공백이다.)
var와 that 사이에 있는 빈 칸은 제거할 수 없다.
하지만 다른 빈 칸들은 제거해도 상관 없다.
자바스크립트에서는 /**/ 형태의 블럭 주석과 // 형태의 한줄 주석을 사용할 수 있다.
*주석을 달 때는 항상 코드에 대해 정확히 설명해야한다.
02)이름(Name)
하나의 문자나 그 뒤를 이어서 하나 이상의 문자, 숫자, _가 붙는 문자열로 문장, 변수, 매개변수, 속성명, 연산자, 라벨 등에 사용한다.
예약어는 객체 리터럴의 속성명이나 객체의 속성을 나타낼 때 사용하는 마침표 다음에 사용할 수 없다.
03)숫자(Number)
숫자형은 하나만 있다. 내부적으로 숫자는 64비트 부동 소수점 형식이다.
자바스크립트는 정수와 실수의 구분이 없다.(즉, 1과 1.0은 같은 값이다)
음수는 수앞에 -를 붙이면 된다.
NaN은 수치 연산을 해서 정상적인 값을 얻지 못할 때의 값이다.
NaN은 그 자신을 포함하여 어떤 값하고도 같지 않다. 그러므로 NaN인지 확인하려면 비교 구문이 아니라 isNaN()이라는 함수를 사용해야 한다.
04)문자열(String)
문자열은 작은 따옴표나 큰 따옴표로 묶어서 나타낸다. 따옴표 안에 문자 0개 이상을 포함한다.
””(백슬래쉬)는 이스케이프 문자다.
문자열은 length라는 속성이 있다.
“seven”.length의 값은 5이다.
문자열은 별하지 않으며 일단 문자열이 한번 만들어지면, 이 문자열은 결코 편하지 않는다.
하지만 여러 문자열을 + 연산자로 연결하여 새로운 문자열을 만들 수 있다.
05)문장(Statements)
하나의 컴퍼일 단위에는 실행을 위한 문장들이 포함돼 있다.
switch문, while문, for문, do문 에는 break문에서 사용할 수 있는 라벨을 선택적으로 지정할 수 있다.
문장들은 대게 위에서 아래로 순서대로 실행한다.
- 조건문(if,switch)
- 반복문(while, for, do)
- 벗어나는 문장(break, return, throw)
if문
표현식의 값에 따라 프로그램의 흐름을 변경한다.
If ( 표현식 ) { Then블록(true) } else { else블록(false) }
then블록은 표현식이 참(true)일때 실행, else블록은 표현식이 거짓(false)인 경우에 실행한다.
거짓에 해당하는 값들
- false
- null
- undefined
- 빈 문자열 ” ”
- 숫자()
- NaN
이 외의 모든 값은 참이다.
switch문
다중분기를 수행
모든 case문의 표현식이 같은지를 비교한다.
표현식의 결과값은 숫자일수도 문자열일수도 있다. 일치하는 표현식을 찾으면 해당 case 절에 있는 문장들을 실행한다.
만약, 일치하는 표현식을 찾지 못하는 경우 default절의 문장을 실행(default는 선택사항)
case절은 하나 이상의 case문을 포함
case절의 표현식은 꼭 상수일 필요가 없다. case절의 문장 마지막에는 다음 case절로 넘어가지 않게 실행 흐름을 벗어나는 문장을 사용해야 한다. (break문을 사용할 수 있다)
while문
단순한 반복 수행 문장, 표현식이 참인 동안은 블록을 반복해서 실행하고 표현식이 거짓이면 반복 수행을 끝낸다.
for문
초기화, 조건, 증가라는 세가지 절로 제어하는 구조 (세가지 모두 선택적)
- 초기화 — 반복 횟수를 제어하는 변수를 초기화
- 조건 — 조건 부분이 만족하는 검사
- 증가 — 조건에서 거짓으로인해 블록을 거친 뒤에 초기화값을 증가시켜 다음 반복문에 적용해서 다시 조건으로 이동한다.
for( var i = 0;(초기화) i < 10;(조건) i++(증가) ) { 블록 }
for in문
객체의 속성 이름(또는 키)을 열거하는 것입니다. (이러한 형식을 for in문이라고 한다.)
각각의 반복 실행마다 객체에 있는 각각의 속성 이름을 변수에 할당 합니다.
for( myvar in obj ) { }
throw문
예외를 발생한다. 만약 throw문이 try블록 안에 있으면 실행의 제어는 catch절로 이동한다. 만약 throw 문이 일반적인 함수 내에 있다면 함수 호출은 중단되고 함수를 호출한 try문의 catch절로 실행 흐름이 이동한다.
Throw 표현식 ;
표현식 부분은 보통 name과 message라는 속성이 있는 객체 리터럴이다. 예외를 포착한 곳에서는 이 객체의 정보로 무엇을 수행할지 결정할 수 없다.
return문
함수에서 호출한 곳으로 되돌아가는 역할을 한다. 또한 이 문장은 반환값을 지정한다.
표현식이 지정되지 않으면 undefined를 반환한다.
자바스크립트는 return과 표현식 부분 사이에 줄 바꿈을 허용하지 않는다.
break문
반복문이나 switch 문에서 흐름을 벗어나게 하는 역할을 한다.
라벨 이름을 취할 수 있는데 라벨이 주어지면 라벨이 붙은 문장의 끝으로 이동한다.
자바스크립트는 break와 라벨 사이에 줄 바꿈을 허용하지 않는다.
06)표현식
가장 간단한 값은 리터럴값(문자열이나 숫자) 변수, 내장값들(true, false, null, undefined, NaN, Infinity 등), new 키워드에 의한 호출 표현식, delete 키워드 다음에 나오는 세주 지정 표현식, 괄호로 쌓인 표현식, 전치 연산자 다음에 이어지는 표현식등…
그 외에 표현식
- 이항 연산자
- ? 삼항 연산자
- 호출
- 세부지정 ( . 또는 [] )
typeof연산자
typeof연산자의 결과값에는 number, string, boolean, undefined, function, object 등이 있다.
피연산자가 배열이나 null이면 결과는 모두 object인데 이는 약간의 문제가 있다.
&&연산자
첫번째 피연산자가 거짓일 경우 첫 번째 피연산자의 값을 취하고, 그렇지 않은 경우에는 두번째 피연산자 값을 결과값으로 취한다.
(첫번째 피연산자)) && (두번째 피 연산자)
||연산자
&&와 반대로 첫번째 피연산자가 참이면 이 값을 취하고, 그렇지 않으면 두번째 피연산자를 결과값으로 취한다.